Key-value solid state drive (SSD) provides key-value (KV) interface to the user, with native commands such as get(key, &value) put(key, value), delete(key) etc′. The drive manages by itself the allocation of KV pairs into physical addresses. This offloads that task from the host, and remove redundant mapping and computations.
As the SSD memory controller is responsible to the data allocation and retrieval, it must maintain some sort of index to point to the specific location of each KV pair. In order to have low latency response to get commands it is desirable that all the index will resides in random access memory (RAM) such as but not limited to a dynamic RAM (DRAM).
However, while the host generally has access to a large amount of DRAM, the memory controller inside the SSD has access to a limited amount of DRAM (usually 1/1000 of the storage size). As the number of KV pairs increases (or put equivalently, the average size of a KV pair decreases), the required amount of DRAM increases, and the internal memory may not be enough to accommodate the index table. This will result in performance deterioration.
There is a need to overcome this problem with only mild increase in host computational requirements.